package com.uacp.sgb.datos.dominio.entidades;

import java.io.Serializable;
import java.util.List;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;

import org.hibernate.annotations.IndexColumn;

@Entity
@NamedQueries
({
	@NamedQuery(name = "BajaBienes.buscar",
			query = "SELECT b FROM BajaBienes b where b.expediente.numero = :expediente")
})
public class BajaBienes implements Serializable
{
	@Id
	@GeneratedValue
	private Long id;
	
	@OneToOne(cascade=CascadeType.PERSIST )
	private Expediente expediente;
	
	@OneToOne(cascade=CascadeType.PERSIST)
	private Oficio oficio;
	
	@OneToMany(cascade=CascadeType.PERSIST, fetch=FetchType.EAGER)
	@JoinColumn
	@IndexColumn(name="IDX1")
	private List<EquipoBaja> equiposBaja;
	
	@OneToMany(cascade=CascadeType.PERSIST, fetch=FetchType.EAGER)
	@JoinColumn
	@IndexColumn(name="IDX2")
	private List<MuebleBaja> mueblesBaja;
	
	private String estado;
	
	public String getEstado() {
		return estado;
	}
	public void setEstado(String estado) {
		this.estado = estado;
	}
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public Expediente getExpediente() {
		return expediente;
	}
	public void setExpediente(Expediente expediente) {
		this.expediente = expediente;
	}
	public Oficio getOficio() {
		return oficio;
	}
	public void setOficio(Oficio oficio) {
		this.oficio = oficio;
	}
	public List<EquipoBaja> getEquiposBaja() {
		return equiposBaja;
	}
	public void setEquiposBaja(List<EquipoBaja> equiposBaja) {
		this.equiposBaja = equiposBaja;
	}
	public List<MuebleBaja> getMueblesBaja() {
		return mueblesBaja;
	}
	public void setMueblesBaja(List<MuebleBaja> mueblesBaja) {
		this.mueblesBaja = mueblesBaja;
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		BajaBienes other = (BajaBienes) obj;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		return true;
	}
}
